home *** CD-ROM | disk | FTP | other *** search
/ Amoszine 3 / Amoszine 3.adf / MORE_SOURCE / File_Select.AMOS.pp / File_Select.AMOS / File_Select.amosSourceCode
AMOS Source Code  |  1992-02-26  |  17KB  |  663 lines

  1. '
  2. ' File Selector Routine
  3. ' ~~~~~~~~~~~~~~~~~~~~~
  4. ' June '93 
  5. ' ~~~~~~~~ 
  6.  
  7. ' Author: Steve Pullinger
  8.  
  9. ' Feel free to use this routine to disguise that you wrote your program
  10. ' in Amos
  11.  
  12. ' This routine uses a double buffered screen 
  13. ' and the autoback system is switched off
  14. '
  15. ' The Autoback 0 command would probably be executed in the main program
  16. ' that calls this routine. 
  17. ' If so then you may need to delete the command from this routine. 
  18. '
  19. ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
  20. ' Version 2
  21. ' Uses search filter 
  22. '
  23. ' Initialise File Selector 
  24. '
  25. ' Maximum Number of files to deal with 
  26. ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
  27. MX_NO_FILES=60
  28. '
  29. ' Storage lists for selector   
  30. ' ~~~~~~~~~~~~~~~~~~~~~~~~~~ 
  31. Dim FILE_LIST$(MX_NO_FILES)
  32. Dim DEV_LIST$(30)
  33. '
  34. ' Set up Fonts so I can use Graphic Text 
  35. ' This lets me position text using pixel co-ordinates
  36. ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  37. Get Rom Fonts 
  38. Set Font 2
  39. '
  40. ' Call Selector routine - passing it a title and search path 
  41. ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  42. FILE_SELECTOR["Steve's File Selector","df0:",""]
  43. '
  44. ' Print Selected path  (returned from procedure) 
  45. ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
  46.  
  47. ' String is either a full path, CANCELLED or NULL_FILE 
  48. ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
  49. Print Param$
  50. '
  51. ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  52. ' The routine
  53. ' ~~~~~~~~~~~
  54. Procedure FILE_SELECTOR[TITLE$,PATH$,FILTER$]
  55.    Shared FILE_LIST$(),DEV_LIST$()
  56.    Reserve Zone 
  57.    '  
  58.    CUR$=" "
  59.    ' Set Up Screen
  60.    ' ~~~~~~~~~~~~~  
  61.    Screen Open 7,320,200,4,LORES
  62.    Screen Display 7,128,50,,
  63.    Curs Off : Flash Off 
  64.    Palette $0,$FFF,$668,$2F4
  65.    Cls 2
  66.    ' Write Title in Box 
  67.    ' ~~~~~~~~~~~~~~~~~~ 
  68.    Ink 0,2
  69.    L=Text Length(TITLE$)
  70.    Text 160-L/2,12,TITLE$
  71.    Ink 1
  72.    Draw 160-L/2-3,2 To 160+L/2+1,2
  73.    Draw 160-L/2-3,2 To 160-L/2-3,15
  74.    Ink 0
  75.    Draw 160+L/2+1,2 To 160+L/2+1,15
  76.    Draw 160-L/2-3,15 To 160+L/2+1,15
  77.    '
  78.    Reserve Zone 18
  79.    ' File List Window 
  80.    ' ~~~~~~~~~~~~~~~~ 
  81.    Ink 0
  82.    Bar 10,20 To 300,120
  83.    TLX=10 : BRX=300
  84.    TLY=20 : BRY=30
  85.    For Z=1 To 10
  86.       Set Zone Z,TLX,TLY To BRX,BRY
  87.       Add TLY,10
  88.       Add BRY,10
  89.    Next Z
  90.    '  
  91.    ' Box for Slider 
  92.    ' ~~~~~~~~~~~~~~ 
  93.    Ink 0
  94.    Draw 305,30 To 315,30
  95.    Draw 305,30 To 305,110
  96.    Ink 1
  97.    Draw 315,30 To 315,110
  98.    Draw 305,110 To 315,110
  99.    Set Zone 18,305,30 To 315,110
  100.    '
  101.    ' Slider Up
  102.    ' ~~~~~~~~~
  103.    Ink 1
  104.    Draw 305,20 To 315,20
  105.    Draw 305,20 To 305,29
  106.    Ink 0
  107.    Draw 315,20 To 315,29
  108.    Draw 305,29 To 315,29
  109.    Draw 310,22 To 307,27
  110.    Draw 310,22 To 313,27
  111.    Set Zone 16,305,20 To 315,29
  112.    '
  113.    ' Slider Down
  114.    ' ~~~~~~~~~~~
  115.    Ink 1
  116.    Draw 305,111 To 315,111
  117.    Draw 305,111 To 305,120
  118.    Ink 0
  119.    Draw 305,120 To 315,120
  120.    Draw 315,111 To 315,120
  121.    Draw 310,119 To 307,114
  122.    Draw 310,119 To 313,114
  123.    Set Zone 17,305,111 To 315,120
  124.    '
  125.    ' String Gadgets 
  126.    ' ~~~~~~~~~~~~~~ 
  127.    Ink 0
  128.    T$="Path:"
  129.    Text 10,139,T$
  130.    Bar 50,130 To 260,140
  131.    Set Zone 11,50,130 To 260,140
  132.    Ink 3,0
  133.    Text 52,139,PATH$
  134.    Ink 0,2
  135.    T$="File:"
  136.    Text 10,159,T$
  137.    Bar 50,150 To 260,160
  138.    Set Zone 12,50,150 To 260,160
  139.    '
  140.    ' Control Buttons
  141.    ' ~~~~~~~~~~~~~~~
  142.    Ink 0
  143.    T$="OK"
  144.    L=Text Length(T$)
  145.    Text 80-L/2,189,T$
  146.    Ink 1
  147.    Draw 60,180 To 98,180
  148.    Draw 60,180 To 60,191
  149.    Ink 0
  150.    Draw 98,180 To 98,191
  151.    Draw 60,191 To 98,191
  152.    Set Zone 13,60,180 To 98,191
  153.    '
  154.    T$="Disks"
  155.    L=Text Length(T$)
  156.    Text 160-L/2,189,T$
  157.    Ink 1
  158.    Draw 132,180 To 186,180
  159.    Draw 132,180 To 132,191
  160.    Ink 0
  161.    Draw 186,180 To 186,191
  162.    Draw 132,191 To 186,191
  163.    Set Zone 14,132,180 To 186,191
  164.    '
  165.    T$="Cancel"
  166.    L=Text Length(T$)
  167.    Text 240-L/2,189,T$
  168.    Ink 1
  169.    Draw 208,180 To 270,180
  170.    Draw 208,180 To 208,191
  171.    Ink 0
  172.    Draw 270,180 To 270,191
  173.    Draw 208,191 To 270,191
  174.    Set Zone 15,208,180 To 270,191
  175.    '
  176.    '
  177.    Double Buffer 
  178.    Autoback 0
  179.    '
  180.    ' Screen Setup Complete
  181.    ' ~~~~~~~~~~~~~~~~~~~~~
  182.    ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
  183.    '
  184.    ' Error Check on Path$ 
  185.    ' ~~~~~~~~~~~~~~~~~~~~ 
  186.    If PATH$=""
  187.       PATH$="NULL"
  188.    End If 
  189.    If Exist(PATH$)=0
  190.       PATH$="DF0:"
  191.    End If 
  192.    If Exist(PATH$)
  193.       TEMP$=Mid$(PATH$,Len(PATH$),1)
  194.       If PATH$<>""
  195.          If Exist(PATH$)
  196.             If(TEMP$<>":") and(TEMP$<>"/")
  197.                PATH$=PATH$+"/"
  198.             End If 
  199.             Ink 0
  200.             Bar 50,130 To 260,140
  201.             Ink 3,0
  202.             Text 52,139,PATH$
  203.             Screen Swap 
  204.             Wait Vbl 
  205.             Screen Copy Physic To Logic
  206.             Gosub DISK_READ
  207.             Gosub FILE_PRINT
  208.          End If 
  209.       End If 
  210.    End If 
  211.    '
  212.    ' Main Loop
  213.    ' ~~~~~~~~~
  214.    ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
  215.    Do 
  216.       If Mouse Key=1
  217.          ZN=Mouse Zone
  218.          '
  219.          ' Check Up Slider
  220.          ' ~~~~~~~~~~~~~~~
  221.          If ZN=16
  222.             If DEVICE=0
  223.                If FILE_LIST_POINTER>0
  224.                   Dec FILE_LIST_POINTER
  225.                   Gosub FILE_PRINT
  226.                End If 
  227.             End If 
  228.             If DEVICE=1
  229.                If DEV_LIST_POINTER>0
  230.                   Dec DEV_LIST_POINTER
  231.                   Gosub DEV_PRINT
  232.                End If 
  233.             End If 
  234.          End If 
  235.          '
  236.          ' Check Down Slider
  237.          ' ~~~~~~~~~~~~~~~~~
  238.          If ZN=17
  239.             If DEVICE=0
  240.                If FILE_LIST_POINTER+10<NO_FILES
  241.                   Inc FILE_LIST_POINTER
  242.                   Gosub FILE_PRINT
  243.                End If 
  244.             End If 
  245.             If DEVICE=1
  246.                If DEV_LIST_POINTER+10<NO_DEVS
  247.                   Inc DEV_LIST_POINTER
  248.                End If 
  249.                Gosub DEV_PRINT
  250.             End If 
  251.          End If 
  252.          '
  253.          ' Check Slider Bar 
  254.          ' ~~~~~~~~~~~~~~~~ 
  255.          If ZN=18
  256.             OLD_POS=POS
  257.             POS=Y Screen(Y Mouse)-30
  258.             If DEVICE=0
  259.                POS=POS/(78/NO_FILES)
  260.                If POS>NO_FILES-10
  261.                   POS=NO_FILES-10
  262.                End If 
  263.                If POS<0
  264.                   POS=0
  265.                End If 
  266.                If OLD_POS<>POS
  267.                   FILE_LIST_POINTER=POS
  268.                   Gosub FILE_PRINT
  269.                End If 
  270.             End If 
  271.             If DEVICE=1
  272.                POS=POS/(78/NO_DEVS)
  273.                If POS>NO_DEVS-10
  274.                   POS=NO_DEVS-10
  275.                End If 
  276.                If POS<0
  277.                   POS=0
  278.                End If 
  279.                If OLD_POS<>POS
  280.                   DEV_LIST_POINTER=POS
  281.                   Gosub DEV_PRINT
  282.                End If 
  283.             End If 
  284.             OLD_POS=POS
  285.          End If 
  286.          '
  287.          ' Check Path String Gadget 
  288.          ' ~~~~~~~~~~~~~~~~~~~~~~~~ 
  289.          If ZN=11
  290.             CANCEL=0
  291.             Clear Key 
  292.             Repeat 
  293.                ' Check for different Zone 
  294.                ' ~~~~~~~~~~~~~~~~~~~~~~~~ 
  295.                If Mouse Key=1
  296.                   ZN=Mouse Zone
  297.                End If 
  298.                If ZN<>11
  299.                   CANCEL=1
  300.                End If 
  301.                ' Read Keyboard
  302.                ' ~~~~~~~~~~~~~
  303.                K$=Inkey$
  304.                ' Check for Return Key 
  305.                ' ~~~~~~~~~~~~~~~~~~~~ 
  306.                If Asc(K$)=13
  307.                   CANCEL=1
  308.                   K$=""
  309.                   TEMP$=Mid$(PATH$,Len(PATH$),1)
  310.                   If PATH$<>""
  311.                      If Exist(PATH$)
  312.                         If(TEMP$<>":") and(TEMP$<>"/")
  313.                            PATH$=PATH$+"/"
  314.                         End If 
  315.                         Gosub DISK_READ
  316.                         Gosub FILE_PRINT
  317.                      End If 
  318.                   End If 
  319.                End If 
  320.                ' Check for backspace
  321.                ' ~~~~~~~~~~~~~~~~~~~
  322.                If Asc(K$)=8
  323.                   PATH$=Left$(PATH$,Len(PATH$)-1)
  324.                   Ink 0
  325.                   Bar 50,130 To 260,140
  326.                   Ink 3
  327.                   Text 52,139,PATH$
  328.                   Screen Swap 
  329.                   Wait Vbl 
  330.                   Screen Copy Physic To Logic
  331.                End If 
  332.                ' Check for Alphanumeric Keys
  333.                ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~
  334.                If(Asc(K$)<127) and(Asc(K$)>32)
  335.                   PATH$=PATH$+K$
  336.                   Text 52,139,PATH$
  337.                End If 
  338.                GADGET_CURSOR=52+Text Length(PATH$)
  339.                Y_GADGET=139
  340.                Gosub GADGET
  341.             Until CANCEL>0
  342.             If CANCEL=1
  343.                Ink 0
  344.                Bar 50,130 To 260,140
  345.                Ink 3
  346.                Text 52,139,PATH$
  347.                Screen Swap 
  348.                Wait Vbl 
  349.                Screen Copy Physic To Logic
  350.             End If 
  351.          End If 
  352.          '  
  353.          ' End of Path Gadget 
  354.          ' ~~~~~~~~~~~~~~~~~~ 
  355.          '
  356.          ' Check File String Gadget 
  357.          ' ~~~~~~~~~~~~~~~~~~~~~~~~ 
  358.          If ZN=12
  359.             CANCELF=0
  360.             Clear Key 
  361.             Repeat 
  362.                ' Check for different Zone 
  363.                ' ~~~~~~~~~~~~~~~~~~~~~~~~ 
  364.                If Mouse Key=1
  365.                   ZN=Mouse Zone
  366.                End If 
  367.                If ZN<>12
  368.                   CANCELF=1
  369.                End If 
  370.                ' Read Keyboard
  371.                ' ~~~~~~~~~~~~~
  372.                K$=Inkey$
  373.                ' Check for Return Key 
  374.                ' ~~~~~~~~~~~~~~~~~~~~ 
  375.                If Asc(K$)=13
  376.                   CANCELF=1
  377.                   K$=""
  378.                   If FILENAME$<>""
  379.                      If Exist(PATH$)
  380.                         If Exist(FILENAME$)
  381.                            NEW_PATH$=PATH$+FILENAME$
  382.                            CANCELF=2
  383.                         End If 
  384.                      End If 
  385.                   End If 
  386.                End If 
  387.                ' Check for backspace
  388.                ' ~~~~~~~~~~~~~~~~~~~
  389.                If Asc(K$)=8
  390.                   FILENAME$=Left$(FILENAME$,Len(FILENAME$)-1)
  391.                   Ink 0
  392.                   Bar 50,150 To 260,160
  393.                   Ink 3
  394.                   Text 52,159,FILENAME$
  395.                   Screen Swap 
  396.                   Wait Vbl 
  397.                   Screen Copy Physic To Logic
  398.                End If 
  399.                ' Check for Alphanumeric Keys
  400.                ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~
  401.                If(Asc(K$)<127) and(Asc(K$)>32)
  402.                   FILENAME$=FILENAME$+K$
  403.                   Text 52,159,FILENAME$
  404.                End If 
  405.                GADGET_CURSOR=52+Text Length(FILENAME$)
  406.                Y_GADGET=159
  407.                Gosub GADGET
  408.             Until CANCELF>0
  409.             If CANCELF>0
  410.                Ink 0
  411.                Bar 50,150 To 260,160
  412.                Ink 3
  413.                Text 52,159,FILENAME$
  414.                Screen Swap 
  415.                Wait Vbl 
  416.                Screen Copy Physic To Logic
  417.             End If 
  418.             If CANCELF=2
  419.                Goto LEAVE
  420.             End If 
  421.          End If 
  422.          '
  423.          ' End of File Name Gadget
  424.          ' ~~~~~~~~~~~~~~~~~~~~~~~
  425.          ' Check for OK Button
  426.          ' ~~~~~~~~~~~~~~~~~~~~~
  427.          If ZN=13
  428.             If FILENAME$=""
  429.                FILENAME$="NULL_FILE"
  430.             End If 
  431.             If Exist(PATH$)
  432.                NEW_PATH$=PATH$+FILENAME$
  433.                Goto LEAVE
  434.             End If 
  435.          End If 
  436.          ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  437.          '
  438.          ' Check for Cancel Button
  439.          ' ~~~~~~~~~~~~~~~~~~~~~~~
  440.          If ZN=15
  441.             NEW_PATH$="CANCELLED"
  442.             Goto LEAVE
  443.          End If 
  444.          ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~
  445.          ' Check for Disk Button
  446.          ' ~~~~~~~~~~~~~~~~~~~~~
  447.          If ZN=14
  448.             Gosub DEV_READ
  449.             Gosub DEV_PRINT
  450.             DEVICE=1
  451.          End If 
  452.          '
  453.          ' Check List Window
  454.          ' ~~~~~~~~~~~~~~~~~
  455.          If(ZN>0) and(ZN<11)
  456.             If DEVICE=1
  457.                Gosub DEV_SELECT
  458.             Else 
  459.                Gosub FILE_SELECT
  460.             End If 
  461.          End If 
  462.       End If 
  463.    Loop 
  464.    '  
  465.    ' End of main loop 
  466.    ' ~~~~~~~~~~~~~~~~ 
  467.    ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
  468.    End 
  469.    '
  470.    ' SubRoutines
  471.    ' ~~~~~~~~~~~
  472.    '
  473.    ' Get Selection from Devices List into Path$ 
  474.    ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
  475.    DEV_SELECT:
  476.    If ZN+DEV_LIST_POINTER<=NO_DEVS
  477.       PATH$=DEV_LIST$(ZN+DEV_LIST_POINTER-1)
  478.       Ink 0
  479.       Bar 50,130 To 260,140
  480.       Ink 3
  481.       Text 52,139,PATH$
  482.       Screen Swap 
  483.       Wait Vbl 
  484.       Screen Copy Physic To Logic
  485.       Gosub DISK_READ
  486.       Gosub FILE_PRINT
  487.       DEVICE=0
  488.    End If 
  489.    ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  
  490.    ' Get Selection from File List 
  491.    ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
  492.    FILE_SELECT:
  493.    If ZN>0
  494.       If ZN+FILE_LIST_POINTER<=NO_FILES
  495.          FILENAME$=FILE_LIST$(ZN+FILE_LIST_POINTER-1)
  496.          '
  497.          ' Is it a File?
  498.          ' ~~~~~~~~~~~~~
  499.          If Left$(FILENAME$,1)=" "
  500.             FILENAME$=Mid$(FILENAME$,2,Len(FILENAME$))
  501.             Ink 0
  502.             Bar 50,150 To 260,160
  503.             Ink 3
  504.             Text 52,159,FILENAME$
  505.             Screen Swap 
  506.             Wait Vbl 
  507.             Screen Copy Physic To Logic
  508.          End If 
  509.          '
  510.          ' Or is it a Directory?
  511.          ' ~~~~~~~~~~~~~~~~~~~~~
  512.          If Left$(FILENAME$,1)="*"
  513.             FILENAME$=Mid$(FILENAME$,2,Len(FILENAME$))
  514.             PATH$=PATH$+FILENAME$
  515.             FILENAME$=""
  516.             TEMP$=Mid$(PATH$,Len(PATH$),1)
  517.             If PATH$<>""
  518.                If Exist(PATH$)
  519.                   If(TEMP$<>":") and(TEMP$<>"/")
  520.                      PATH$=PATH$+"/"
  521.                      Ink 0
  522.                      Bar 50,130 To 260,140
  523.                      Ink 3
  524.                      Text 52,139,PATH$
  525.                      Screen Swap 
  526.                      Wait Vbl 
  527.                      Screen Copy Physic To Logic
  528.                   End If 
  529.                   Gosub DISK_READ
  530.                   Gosub FILE_PRINT
  531.                End If 
  532.             End If 
  533.          End If 
  534.       End If 
  535.    End If 
  536.    ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  537.    '
  538.    DEV_READ:
  539.    ' Read Devices into Dev_List() 
  540.    '
  541.    NO_DEVS=0 : DEV_LIST_POINTER=0
  542.    D$=Dev First$("")
  543.    While D$<>""
  544.       D$=D$-" "
  545.       ' Store  D$ in Data Array  
  546.       '
  547.       DEV_LIST$(NO_DEVS)=D$
  548.       Inc NO_DEVS
  549.       D$=Dev Next$
  550.    Wend 
  551.    Return 
  552.    '
  553.    ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  554.    DEV_PRINT:
  555.    ' Print Dev List to List Window  
  556.    ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
  557.    Ink 0
  558.    Bar 10,20 To 300,120
  559.    Y_FILE=29
  560.    Ink 3,0
  561.    For PRNT_DEV=DEV_LIST_POINTER To DEV_LIST_POINTER+9
  562.       If PRNT_DEV<NO_DEVS
  563.          Text 12,Y_FILE,DEV_LIST$(PRNT_DEV)
  564.          Add Y_FILE,10
  565.       End If 
  566.    Next PRNT_DEV
  567.    ' Draw Slider
  568.    Set Slider 2,2,2,1,1,1,1,1
  569.    Vslider 306,31 To 314,109,NO_DEVS,DEV_LIST_POINTER,(78/NO_DEVS)+8
  570.    Screen Swap 
  571.    Wait Vbl 
  572.    Screen Copy Physic To Logic
  573.    Repeat 
  574.    Until Mouse Key=0
  575.    ZN=0
  576.    Return 
  577.    '
  578.    ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  579.    GADGET:
  580.    '
  581.    ' Inverse cursor in string gadgets 
  582.    ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
  583.    Gr Writing 4+1
  584.    Text GADGET_CURSOR,Y_GADGET,CUR$
  585.    Gr Writing 1
  586.    Screen Swap 
  587.    Wait Vbl 
  588.    Screen Copy Physic To Logic
  589.    Return 
  590.    '
  591.    ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  592.    FILE_PRINT:
  593.    ' Print File List to List Window 
  594.    ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
  595.    Ink 0
  596.    Bar 10,20 To 300,120
  597.    Y_FILE=29
  598.    Ink 3,0
  599.    For PRNT_FILE=FILE_LIST_POINTER To FILE_LIST_POINTER+9
  600.       If PRNT_FILE<NO_FILES
  601.          Text 12,Y_FILE,FILE_LIST$(PRNT_FILE)
  602.          Add Y_FILE,10
  603.       End If 
  604.    Next PRNT_FILE
  605.    ' Draw Slider
  606.    Set Slider 2,2,2,1,1,1,1,1
  607.    If NO_FILES>0
  608.       Vslider 306,31 To 314,109,NO_FILES,FILE_LIST_POINTER,(78/NO_FILES)+8
  609.    End If 
  610.    Screen Swap 
  611.    Wait Vbl 
  612.    Screen Copy Physic To Logic
  613.    Repeat 
  614.    Until Mouse Key=0
  615.    ZN=0
  616.    Return 
  617.    '
  618.    ' End of FILE_PRINT Routine
  619.    ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  620.    '
  621.    DISK_READ:
  622.    '
  623.    ' Read Directory into File_List()
  624.    '
  625.    If Exist(PATH$)
  626.       NO_FILES=0 : FILE_LIST_POINTER=0
  627.       F$=Dir First$(PATH$+FILTER$)
  628.       While F$<>""
  629.          Gosub STRIPOUT
  630.          ' Store F$ in Data Array 
  631.          '
  632.          FILE_LIST$(NO_FILES)=F$
  633.          Inc NO_FILES
  634.          F$=Dir Next$
  635.          Gosub STRIPOUT
  636.       Wend 
  637.    End If 
  638.    Return 
  639.    ' End of DISK_READ Routine 
  640.    ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  
  641.    '
  642.    STRIPOUT:
  643.    '  
  644.    ' Strip out unwanted characters
  645.    ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  646.    L=Len(F$)
  647.    CHARPOS=1
  648.    While CHARPOS<L
  649.       If Mid$(F$,CHARPOS,1)=" "
  650.          If CHARPOS>1
  651.             F$=Left$(F$,CHARPOS-1)
  652.             CHARPOS=L
  653.             Exit 
  654.          End If 
  655.       End If 
  656.       Inc CHARPOS
  657.    Wend 
  658.    Return 
  659.    '
  660.    ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  661.    LEAVE:
  662.    Screen Close 7
  663. End Proc[NEW_PATH$]